System and method for providing presence information to voicemail users

ABSTRACT

A method of providing telecommunication service includes receiving a call for a called party from a calling party. The method also includes determining a presence status of the called party and communicating a greeting for the calling party, wherein the greeting identifies the presence status of the called party.

TECHNICAL FIELD OF THE INVENTION

This invention relates in general to telecommunication systems and, moreparticularly, to providing improved voicemail services.

BACKGROUND OF THE INVENTION

When a call is forwarded to a voicemail system, the caller often hears amessage that indicates the called party is not available and requeststhe caller to leave a message. Many systems may also allow a user tomanually set an alternate greeting for his or her voicemail account. Forexample, the caller may hear a message such as “John is on vacation andwill return on October 22nd.” These specialized greetings howeverrequire manual configuration. As a result, the greeting will not beupdated unless the called party remembers to change the message as hisor her status changes and makes an effort to keep the message updated.

Furthermore, when a voicemail user accesses his or her voicemail accountto listen to recorded voicemail messages, the user often attempts toreturn calls to individuals who have left voicemail messages for theuser. The availability of the party that left the voicemail message mayhave changed since that individual left the message. For example, theparty may have gone to a meeting and may no longer be available to speakwith the user. As a result, returning the phone call at that time maynot be productive, but the user may have no way of knowing this.

SUMMARY OF THE INVENTION

In accordance with the present invention, the disadvantages and problemsassociated with telecommunications have been substantially reduced oreliminated. In particular, a system and method for providing presenceinformation to voicemail users is provided.

In accordance with one embodiment of the present invention, a method ofproviding communication service includes receiving a call for a calledparty from a calling party and determining a presence status of thecalled party. The method also includes communicating a greeting for thecalling party. The greeting identifies the presence status of the calledparty.

In accordance with another embodiment of the present invention, a devicefor providing telecommunication service includes a memory and aprocessor. The memory is capable of storing processor instructions. Theprocessor is capable of receiving a call for a called party from acalling party and determining a presence status of the called party. Theprocessor is also capable of communicating a greeting for the callingparty. The greeting identifies the presence status of the called party.

Technical advantages of certain embodiments of the present inventioninclude a technique for providing voicemail system users usefulinformation regarding the availability and/or location of other users.Other technical advantages of certain embodiments include a robustsolution for providing availability information that is generateddynamically and techniques for limiting access to such availabilityinformation to authorized users. Other technical advantages of thepresent invention will be readily apparent to one skilled in the artfrom the following figures, descriptions, and claims. Moreover, whilespecific advantages have been enumerated above, various embodiments mayinclude all, some, or none of the enumerated advantages.

BRIEF DESCRIPTION OF THE DRAWINGS

For a more complete understanding of the present invention and itsadvantages, reference is now made to the following description, taken inconjunction with the accompanying drawings, in which:

FIG. 1 illustrates a communication system according to a particularembodiment of the present invention;

FIGS. 2A-2B are block diagrams illustrating examples of the operation ofa particular embodiment of a voicemail server that may be used in thecommunication system of FIG. 1;

FIG. 3 is a flowchart illustrating an example operation of the voicemailserver; and

FIG. 4 is also a flowchart illustrating additional aspects of an exampleoperation of the voicemail server.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1 illustrates a communication system 10 according to a particularembodiment of the present invention. As shown, communication system 10includes a plurality of local area networks (LANs) 80 coupled by aPublic Switched Telephone Network (PSTN) 50. Each LAN 80 additionallycouples a plurality of communication devices 60, a voicemail server 20,a call manager 30, a gateway 40, and a presence server 90 to one anotherand to PSTN 50. As described in greater detail below, voicemail servers20 utilize information obtained from presence servers 90 to provideenhanced voicemail service.

Communication devices 60 may each represent any suitable combination ofhardware, software, and/or encoded logic to provide communicationservices to a user. For example, communication devices 60 may representtelephones, computers running telephony software, video monitors,cameras, or any other communication hardware, software, and/or encodedlogic that supports the communication of voice, video, text or othersuitable forms of data using communication system 10. In the illustratedembodiment, communication devices 60 a, 60 b, 60 d, and 60 e representInternet Protocol (IP) telephones and communication devices 60 c and 60f represent telephony-enabled personal computers (PCs). Additionally,communication device 60 i represents a cellphone coupling tocommunication system 10 through PSTN 50. Although FIG. 1 illustrates aparticular number and configuration of communication devices 60,communication system 10 contemplates any number or arrangement of suchcomponents to support communication of media.

Gateways 40 may each represent any suitable combination of hardwareand/or software that performs translation functions to facilitateseamless communication between PSTN 50 and LANs 80. These functions mayinclude translation between transmission formats and betweencommunications procedures. In addition, gateways 40 may also translatebetween audio and video CODECs and perform call setup and clearing onboth the LAN side and the PSTN side. For example, gateway 40 a mayinterface call manager 30 a with PSTN 50. As a result, when a call isplaced by communication device 60 g using PSTN 50, gateway 40 atranslates the call format associated with PSTN 50 to a call formatassociated with call manager 30 a, such as, for example, SIP or anothersuitable packet-based communication protocol.

Call managers 30 comprise any suitable combination of hardware and/orsoftware operable to establish a connection between a calling componentof communication system 10 and a called component, such as, for example,connecting a call between communication devices 60 or between aparticular communication device 60 and voicemail server 20. In aparticular embodiment, call managers 30 comprise Voice over InternetProtocol (VoIP) servers that perform the functions of signaling andsession management within a packet telephony network. The signalingfunctionality of call managers 30 allow call information to be carriedacross network boundaries. The session management functionality of callmanagers 30 provides the ability to control the attributes of anend-to-end call across multiple networks in communication system 10. Forexample, in particular embodiments, call managers 30 may support SIP,which is a standard for multimedia conferencing over internet protocol.In such embodiments, call managers 30 may comprise SIP proxy serversthat handle call processing, SIP requests, and SIP responses. Althoughthe following description of call managers 30 is detailed with respectto SIP, it should be understood that call managers 30 may support otherIP telephony protocols as well, such as the H.323 protocol. Inparticular embodiments, call managers 30 may also provide a number oftelephony services for communication devices 60 and other deviceslocated in LAN 80, including, but not limited to, call forwarding,teleconferencing, network monitoring, and CODEC translation.

Voicemail servers 20 support voicemail services for communicationdevices 60. More specifically, voicemail servers 20 may generatevoicemail messages 26, receive voicemail messages 26 generated by othervoicemail servers 20, store received or generated voicemail messages 26,and/or provide users access to stored voicemail messages 26. Voicemailserver 20 may include any appropriate combination of hardware and/orsoftware suitable to provide the described messaging functionality. Thecontent and operation of particular embodiments of voicemail servers 20are described in greater detail below with respect to FIGS. 2A and 2B.As shown with respect to voicemail server 20 a in FIG. 1, voicemailservers 20 may each include a processor 22 and a memory 24. Furthermore,voicemail server 20 a includes a text-to-speech (TTS) module 120representing a software application running on processor 22. Memory 24of voicemail server 20 a also stores a user table 130, a greeting table140, an indicator table 170, and one or more voicemail messages 26recorded for users having accounts supported by voicemail server 20 a.These elements of voicemail servers 20 and their operation and/or useare described in greater detail below with respect to FIGS. 2A and 2B.

Presence servers 90 generate, maintain, and/or disseminate presenceinformation 96 relating to the presence status of one or more users ofcommunication system 10. As used in this description and the claims thatfollow, presence information 96 may include any suitable informationthat describes the location of the relevant user and/or the availabilityof that user for the purposes of communicating with other users.Examples of presence information 96 utilized in particular embodimentsof communication system 10 include, but are not limited to, informationindicating whether a user is currently logged into a particular networkor component; information identifying a wireless network in which theuser is currently located, information indicating whether the user hasused a particular component of communication system 10 within apredetermined time period; information identifying an activity presentlyscheduled for the user; and information specifying a physical locationof the user. In the illustrated embodiment, presence server 90 maintainspresence information 96 for particular users in a presence table 150 inmemory 24 of presence server 90.

Additionally, although shown in FIG. 1 as a discrete component ofcommunication system 10, presence server 90 may alternatively representa portion of voicemail servers 20, call managers 30, gateways 40, or anyother appropriate element of communication system 10. In general,presence server 90 may represent any combination of hardware and/orsoftware operable to provide the described functionality. Furthermore,presence server 90 may collect presence information 96 from a variety ofsources including other components of communication system 10,components external to communication system 10, and elementsincorporated into presence server 90 itself. In particular, FIG. 1illustrates three example sources that may provide presence information96 to presence server 90 or that may provide other data to presenceserver 90 that presence server 90 may use to generate presenceinformation 96. More specifically, the illustrated embodiment ofcommunication system 10 includes a personal computer (PC) 82, an instantmessenger client 84, and a calendar client 86. In the illustratedembodiment, instant messenger client 84 and calendar client 86 representsoftware applications running on PCs. In general, however, presenceserver 90 may obtain presence information 96 and/or data for generatingpresence information 96 from any appropriate sources.

LANs 80 and PSTN 50 provide connectivity between components coupled tothem using any appropriate communication protocols. In particularembodiments, LANs 80 each represent all or a portion of an Ethernetnetwork connecting the communication devices 60 of a particular entity,such as a company or a university campus. Furthermore, in particularembodiments, PSTN 50 represents all or a portion of thepublicly-switched telephone network. Although FIG. 1 illustrates aparticular embodiment of communication system 10 that includesparticular types of networks, specifically LANs 80 and PSTN 50, couplingparticular components of communication system 10, communication system10 may include any appropriate types and numbers of networks.

In operation, voicemail servers 20 utilize information obtained frompresence servers 90 to provide various forms of enhanced voicemailservice. In particular, voicemail servers 20 may provide presenceinformation 96 for a particular user as part of a greeting to callersleaving a voicemail message 26 for that user. This may help callers indeciding whether to leave a voicemail message 26 and/or what to say inthe voicemail message 26. Additionally or alternatively, voicemailservers 20 may provide presence information 96 for a voicemail messagesender to a recipient of the voicemail message 26. This may help therecipient determine whether to call the sender back immediately and/orwhether to take any other appropriate actions in response to receivingthe voicemail message 26. Both of these functionalities are described ingreater detail below.

Voicemail Greetings

In particular embodiments of communication system 10, voicemail servers20 may provide presence information 96 as part of a greeting played tocallers leaving a voicemail message 26 for a particular voicemail user.FIG. 1 illustrates an example of the operation of a particularembodiment of communication system 10 under such circumstances. As shownin FIG. 1, a user (referred to here as the “calling party”) using acommunication device 60, for example communication device 60 a, places acall to another user (referred to here as the “called party”) ofcommunication system 10 associated with another communication device 60,communication device 60 b in this example. In this example, call manager30 a attempts to connect the incoming call to communication device 60 b.If the called party does not answer the incoming call, call manager 30 amay forward the incoming call to voicemail server 20 a so that thecalling party can record a voicemail message 26 for the called party.

In responding to the incoming call, voicemail server 20 a plays agreeting associated with the voicemail account of the called party. Aspart of this process, voicemail server 20 a may request presenceinformation 96 from presence server 90 to play as part of the greetingor to be used in selecting an appropriate greeting. Voicemail server 20a may request presence information 96 from presence server 90 a in anyappropriate manner based on the configuration and capabilities ofvoicemail server 20 a and presence server 90 a.

For example, in particular embodiments, voicemail server 20 receives oneor more call signaling messages, such as SIP invitations, from callmanager 30 a as part of the incoming call. These call signaling messagesmay specify a destination communication device 60 for the incoming call,in this case communication device 60 b. In such embodiments, voicemailserver 20 a may then identify a user associated with communicationdevice 60 b, using information contained in user table 130. In theillustrated embodiment, user table 130 includes a plurality of useridentifiers 132 and voicemail server 20 may select a user identifier 132associated with the caller. Voicemail server 20 a then requests presenceinformation 96 from presence server 90 a by transmitting a presencerequest 92 to presence server 90 a that identifies the relevant user. Inparticular embodiments, presence request 92 may represent a SIP forInstant Messaging and Presence Leveraging Extensions (SIMPLE) requestthat includes the selected user identifier 132. The process by whichvoicemail server 20 a requests presence information 96 is described ingreater detail with respect to FIGS. 2A and 2B.

Additionally, particular embodiments of communication system 10 mayimplement security policies to limit access to presence information 96.As a result, voicemail server 20 a may determine whether the callingparty is authorized to access the presence information 96 of the calledparty prior to generating presence request 92 or at any otherappropriate time. Voicemail server 20 a may determine whether thecalling party is authorized based on caller identification (“caller ID”)information associated with the call, a personal identification number(PIN) supplied by the calling party, and/or any other appropriatecriteria or consideration. For example, a particular voicemail server 20a may determine that a particular calling party is not authorized toaccess presence information 96 associated with the called party based onthe fact that caller ID information associated with the relevant callindicates that the call originates from a communication device 60external to LAN 80 a in which voicemail server 20 a is located. In suchembodiments, if the relevant voicemail server 20 a determines that thecalling party is not authorized to access presence information 96associated with the called party, voicemail server 20 a may decide notto generate presence request 92 and may instead play a default greeting.If, however, voicemail server 20 a determines that the calling party isauthorized to access presence information 96 for the called party,voicemail server 20 a may generate presence request 92 and transmitpresence request 92 to presence server 90 a, as described above.

Furthermore, in particular embodiments, presence server 90 a may supportmultiple levels of authorization for different types of callers. As oneexample, presence server 90 a may be configured to provide certaingeneric types of presence information, such as “Out of Office,” to anexternal caller and more detailed presence information, such as “InMeeting in Conference Room 3,” to the recipient's supervisor. As aresult, presence request 82 may specify an authorization levelassociated with the relevant caller.

In response to receiving presence request 92, presence server 90 agenerates or accesses presence information 96 that describes thepresence status of the user specified by the user identifier 132 in thepresence request 92. In particular embodiments, presence server 90 amaintains a presence table 150 containing up-to-date presenceinformation 96 for each user of communication system 10. In suchembodiments, presence server 90 a may retrieve presence information 96associated with the user identified in presence request 92 from presencetable 150. An example of this process is described in greater detailwith respect to FIG. 2B. Furthermore, if presence request 82 specifiesan authorization level associated with the caller, presence server 90 amay use the authorization level to choose between multiple types ofpresence information 96 maintained by presence server 90 a, to limit thecontent of presence information 96 provided by presence server 90 a, orother too otherwise modify the amount or nature of presence information96 generated or retrieved by presence server 90 a.

To facilitate generation of presence information 96, components ofcommunication system 10 that monitor the presence status of users orthat provide information related to the presence status of users maysend presence server 90 a information pertaining to the presence statusof a particular user periodically or whenever the presence status of theuser changes. As noted above, these various sources may provide varioustypes of information pertaining to the presence of the user. As oneexample, PC 82 may notify presence server 90 a whenever a user logs inor logs out of PC 82. As another example, instant messenger client 84may notify presence server 90 a whenever a user initiates or terminatesa conversation with another user or may provide presence server 90 ainformation pertaining to the amount of time that has passed since theuser's last keystroke. As yet another example, calendar client 86 maynotify presence server 90 a whenever an event scheduled on the user'scalendar begins or ends and may also inform presence server 90 a of thetype of scheduled event, such as, for example, “meeting,” “vacation,” or“sales call.” Presence server 90 a may then use the information receivedfrom the various sources to generate presence information 96 and thenstore presence information 96 in presence table 150 for later use.

As an alternative to maintaining a data structure such as presence table150 that includes presence information 96, presence server 90 a mayinstead poll the various sources used by presence server 90 a wheneverpresence server 90 a receives a presence request 92. More specifically,presence server 90 a may request information from PC 82, instantmessenger client 84, and/or calendar client 86 related to the presencestatus of the relevant user and may generate presence information 96based in any suitable manner on the requested information. In general,however, presence server 90 a may generate or access presenceinformation 96 in any appropriate manner.

After generating or accessing presence information 96, presence server90 a transmits presence information 96 to voicemail server 20 a.Presence server 90 a may transmit presence information 96 to voicemailserver 20 a in any suitable form based on the configuration andcapabilities of presence server 90 a and voicemail server 20 a. Inparticular embodiments, presence server 90 a transmits a presenceresponse 94 that contains the requested presence information 96.Moreover, in particular embodiments, presence response 94 represents aSIMPLE response that includes presence information 96 in any suitableformats such as, for example, in a text format. In the illustratedexample, presence server 90 transmits presence response 94 that includespresence information 96 indicating that the relevant user is “OnVacation.”

Upon receiving presence information 96 from presence server 90 a,voicemail server 20 a selects or generates a greeting to play to thecalling party. For example, voicemail server 20 a, in particularembodiments, maintains a greeting table 140 that includes one or morestored greetings 142. Each stored greeting 142 is associated with one ormore presence statuses recognized by communication system 10. Storedgreetings 142 may represent any appropriate form of audio data. Inparticular embodiments, stored greetings 142 represent WAV files.Voicemail server 20 a may determine a current presence status of thecalled party based on presence information 96 received from presenceserver 90 a and may identify a stored greeting 142 associated with thispresence status. This matching process is described in greater detailbelow with respect to FIG. 2A.

Alternatively, voicemail server 20 a may utilize TTS module 120 todynamically generate a greeting based on presence information 96. Forexample, as shown, TTS module 120 may receive a presence response 94that includes the text “On Vacation.” TTS module 120 may generate asynthesized-speech audio greeting based on the text “On Vacation.”Furthermore, particular embodiments of voicemail server 20 a may utilizeboth techniques, with voicemail server 20 a attempting to match presenceinformation 96 to a recorded greeting and, if no recorded greetingmatches presence information 96, generating a greeting using TTS module120. An example of this process is also described in greater detail withrespect to FIG. 2B.

After selecting a stored greeting 142 or generating a greeting using TTSmodule 120, voicemail server 20 a plays the appropriate greeting to thecalling party. For example, in particular embodiments, voicemail server20 a plays the appropriate greeting by generating a plurality of Voiceover Internet Protocol (VoIP) packets 180 containing audio dataassociated with the appropriate greeting and transmitting VoIP packets180 to the communication device 60 being used by the calling party, inthis example communication device 60 a. Communication device 60 a maythen generate audio signals for the calling party based on the audiodata included in VoIP packets 180.

The calling party may then choose to leave a voicemail message 26 forthe called party or may choose to call back later and/or takeappropriate actions based on the greeting. For example, if the greetingindicates that the called party will be on vacation for the remainder ofthe week, the calling party may attempt to contact another party if aresponse is needed before the called party is scheduled to return.Furthermore, the calling party may adjust the contents of any voicemailmessage 26 left by the calling party based on the greeting. Thus,particular embodiments of communication system 10 may facilitate moreefficient use of voicemail services.

Received Voicemail Messages

In addition to or instead of providing presence information 96 invoicemail greetings, voicemail servers 20 may also provide a presenceindicator to a user (referred to here as the “recipient”) retrievingvoicemail messages 26 from the user's account. The presence indicatorindicates the presence status of another user (referred to here as the“sender”) who left the voicemail messages 26 for the recipient. Forexample, in particular embodiments of communication system 10, therecipient may retrieve voicemail messages 26 that have been left for theuser by calling an extension associated with voicemail server 20 using,for example, communication device 60 b. In such an example, call manager30 a may establish a connection between communication device 60 b andvoicemail server 20 a. The recipient may then log into a voicemailaccount associated with the recipient and/or take any other appropriatesteps, based on the configuration and characteristics of communicationsystem 10, to access his or her voicemail account.

Once logged into his or her account, the recipient may choose to listento voicemail messages 26 that have been left for the recipient. Inparticular embodiments of communication system 10, after the recipienthas listened to a voicemail message 26 saved in the recipient's account,voicemail server 20 a may prompt the recipient to determine whether therecipient would like to receive presence information 96 for the senderwho left that voicemail message 26. The recipient may then request thatvoicemail server 20 a provide current presence information 96 for thesender who left the voicemail message 26 by, for example, pressing aparticular button on a keypad of communication device 60 b.Additionally, particular embodiments of communication system 10implement security policies and presence server 90 a, voicemail server20 a, or another voicemail server 20 associated with the sender maydetermine whether the recipient is authorized to access presenceinformation 96 for the sender. If not, voicemail server 20 a mayindicate that the recipient is not authorized to access the requestedpresence information 96, terminate replaying of the voicemail message26, and/or take any other appropriate steps.

If, however, voicemail server 20 a or another component of communicationsystem 10 determines that the recipient is authorized to access presenceinformation 96 for the sender, voicemail server 20 a may identify thesender. Voicemail server 20 a may identify the sender in any appropriatemanner. In particular embodiments, voicemail server 20 a identifies thesender by reading a device identifier, such as a phone number, anextension, an IP address, or any other suitable identifier, from theheader of the relevant voicemail message 26. The device identifieridentifies a communication device 60 used by the sender to record thevoicemail message 26. In such embodiments, voicemail server 20 a maythen identify the sender based on the identified communication device 60and information stored in user table 130. This process is described ingreater detail below with respect to FIGS. 2A and 2B. Voicemail server20 a then generates presence request 92 that identifies the sender ofvoicemail message 26 and transmits presence request 92 to presenceserver 90 a, as described above. By way of illustration, voicemailserver 20 a generates an example presence request 92 in FIG. 1requesting presence information 96 for “Jones, Steve.”

In response to receiving presence request 92, presence server 90 agenerates or accesses presence information 96 associated with thesender. Presence server 90 a may then transmit to voicemail server 20 aa presence response 94 that includes current presence information 96associated with the sender, as described above. By way of illustration,the example presence response 94 shown in FIG. 1 includes presenceinformation 96 indicating that the relevant user is “On Vacation.”

Upon receiving presence response 94 from presence server 90 a, voicemailserver 20 a selects a stored presence indicator 172 or generates apresence indicator to play to the user, based on presence information 96included in the received presence response 94. Presence indicators 172may represent any appropriate form of audio data, such as a WAV file,and may indicate the presence status of the sender in any appropriatemanner.

For example, in particular embodiments, voicemail server 20 a maintainsan indicator table 170 that includes one or more stored presenceindicators 172. Each stored presence indicator 172 is associated withone or more instances of presence information 96, such as “Logged In” or“On Vacation,” recognized by communication system 10. Voicemail server20 a may select a stored presence indicator 172 associated with thatinstance of presence information 96. Alternatively, voicemail server 20a may utilize TTS module 120 to dynamically generate a presenceindicator based on presence information 96, as described above withrespect to the operation of voicemail servers 20 in providing greetingsto callers. Furthermore, particular embodiments of voicemail server 20may utilize both techniques, with voicemail server 20 attempting tomatch presence information 96 to a stored presence indicator 172 and, ifno stored presence indicator 172 matches presence information 96,generating audio data using TTS module 120.

After selecting a stored presence indicator 172 or generating a presenceindicator 172, voicemail server 20 a plays the selected stored presenceindicator 172 or generated presence indicator 172 to the user. Forexample, in particular embodiments, voicemail server 20 a transmits aplurality of Voice over Internet Protocol (VoIP) packets 180 containingdata from the selected presence indicator 172 or the generated presenceindicator 172 to communication device 60 b. Communication device 60 bmay then generate audio signals for the calling party based on the dataincluded in VoIP packets 180. The user may then use information providedby the presence indicator 172 to determine how to respond to thevoicemail message 26. For example, if the greeting indicates that theparty who left the voicemail message 26 is currently in a meeting, thecalling party may wait until later to return the call.

By providing presence information 96 to voicemail users, communicationsystem 10 may facilitate more efficient use of communication servicesoffered by communication system 10. Additionally, particular embodimentsof voicemail server 20 a may be capable of dynamically generatinggreetings and presence indications based on any available presenceinformation 96, providing a flexible and robust solution forcommunicating presence information 96 to voicemail users. In thisregard, particular embodiments of communication system 10 may provideseveral operational benefits.

FIGS. 2A and 2B illustrate operation of particular embodiments ofvoicemail server 20 and presence server 90 in determining an appropriategreeting to be played to a calling party. More specifically, FIGS. 2Aand 2B illustrate operation of a particular embodiment of voicemailserver 20 in which voicemail server 20 attempts to match presenceinformation 96 received from presence server 90 to a stored greeting 142and, if unsuccessful, generates a greeting using a text-to-speechmodule. FIG. 2A illustrates an example of the operation of voicemailserver 20 when voicemail server 20 successfully matches receivedpresence information 96 to a stored greeting, while FIG. 2B illustratesan example in which voicemail server 20 is unable to match receivedpresence information 96 to a stored greeting and generates a greetinginstead. Although FIGS. 2A and 2B illustrate operation of voicemailserver 20 and presence server 90 with respect to selecting a particularstored greeting 142 or generating audio data to play as a greeting,similar techniques may be utilized to select or generate presenceindicators 172 to be provided to voicemail recipients after listening tovoicemail messages 26, as described above with respect to FIG. 1.

FIG. 2A, as indicated above, illustrates operation of particularembodiments of voicemail server 20 and presence server 90 in selecting agreeting to play the calling party based on presence information 96associated with the called party. Voicemail server 20 and presenceserver 90 may include any appropriate combination of software and/orhardware suitable to provide the described functionality. Theillustrated embodiments of voicemail server 20 and presence server 90both include a processor 22 and a memory 24.

Processors 22 a and 22 b (referred to generically as “processors 22”collectively or a “processor 22” singularly) are operable to executeinstructions associated with the services provided by voicemail server20 and presence server 90. Processors 22 may represent any suitabledevices capable of processing and/or communicating electronicinformation. Examples of processor 22 include, but are not limited to,application-specific integrated circuits (ASICs), field-programmablegate arrays (FPGAs), digital signal processors (DSPs) and any othersuitable specific or general purpose processors.

Memories 24 a and 24 b (referred to generically as “memories 24”collectively or a “memory 24” singularly) store processor instructionsand/or any other appropriate information used by voicemail server 20 andpresence server 90 in operation. In particular embodiments, voicemailserver 20 maintains user table 130 and greeting table 140 in memory 24a, while presence server 90 maintains presence table 150 in memory 24 b.Memories 24 may represent any collection and arrangement of volatile ornon-volatile, local or remote devices suitable for storing data such as,for example, random access memory (RAM) devices, read only memory (ROM)devices, magnetic storage devices, optical storage devices, or any othersuitable data storage devices.

TTS module 120 generates synthesized voice signals simulatingpronunciation of text received by TTS module 120. TTS module 120 mayinclude any appropriate combination of software and/or hardware suitableto provide the described functionality. In particular embodiments, TTSmodule 120 represents a computer application running on processor 22 a.

In operation, voicemail server 20 receives call signaling message 112identifying a destination communication device 60, device interface,and/or caller for the incoming call. In particular embodiments, callsignaling message 112 may represent a SIP invitation and include aportion of the IP address or phone number for the destinationcommunication device 60. In the illustrated embodiment, call signalingmessage 112 specifies an extension associated with the destinationcommunication device 60. In particular embodiments, voicemail server 20receives call signaling message 112 in one or more call signalingmessages received when call manager 30 forwards the incoming call tovoicemail server 20.

After voicemail server 20 receives call signaling message 112, voicemailserver 20 identifies a user identifier 132 associated with the callerbased on call signaling message 112 and information stored in user table130. User table 130, in particular embodiments, includes a plurality ofdevice identifiers 134 each associated with a user identifier 132 andvoicemail server 20 matches all or a portion of call signaling message112 to a device identifier 134. In particular embodiments ofcommunication system 10, users may be assigned more than onecommunication device, such as an office telephone and a mobile phone, ormay be assigned a communication device 60 with multiple interfaces, suchas a multi-line telephone that supports multiple extensions. As aresult, multiple device identifiers 134 may be associated with the sameuser identifier 132.

After identifying a user identifier 132 associated with the caller,voicemail server 20 generates a presence request 92 that includes theuser identifier 132 associated with the matched device identifier 134.Voicemail server 20 then transmits presence request 92 to presenceserver 90, for example, as a SIMPLE request. Presence server 90 receivespresence request 92 from voicemail server 20 and generates a presenceresponse 94 based on information stored in presence database 150. Inparticular embodiments, presence server 90 maintains a presence database150 in memory 24 b that associates a user identifier 132 of a particularuser with presence information 96 for that user. In response toreceiving presence request 92, presence server 90 matches the useridentifier 132 contained in the received presence request 92 to a useridentifier 132 in presence database 150. Moreover, although FIGS. 2A and2B illustrate embodiments of presence server 90 that retrieve presenceinformation 96 from memory 24 b in response to receipt of a presencerequest 92, alternative embodiments of presence server 90 maydynamically create presence information 96 when requested by voicemailserver 20.

Presence server 90 then generates a presence response 94 that includesthe presence information 96 associated with the user identifier 132specified in the presence request 92. After generating presence response94, presence server 90 transmits presence response 94 to voicemailserver 20. As noted above, in particular embodiments, presence server 90transmits presence response 94 to voicemail server 20 as a SIMPLEresponse that includes presence information 96 in the form of text.

Voicemail server 20 receives presence response 94 from presence server90 and selects or generates a greeting to play the calling party basedon the presence information 96 included in presence response 94 andinformation stored in greeting table 140. In the illustrated embodiment,greeting table 140 includes a plurality of different instances ofpresence information 96, each identifying a particular presence statusrecognized by communication system 10, and a plurality of storedgreetings 142, each associated with one or more instances of presenceinformation 96. In such an embodiment, voicemail server 20 attempts tomatch the presence information 96 contained in presence response 94 to aparticular instance of presence information 96 in greeting table 140.

If voicemail server 20 successfully matches presence information 96 inpresence response 94 to an instance of presence information 96 ingreeting table 150, as voicemail server 20 does in the exampleillustrated by FIG. 2A, voicemail server 20 then transmits the storedgreeting 142 associated with the matched presence information 96 to thecommunication device 60 being used by the recipient. Voicemail server 20may also append additional audio data to the beginning or end of theselected stored greeting 142 before transmitting the selected storedgreeting 142 to the relevant communication device 60. For example,voicemail server 20 may append audio data comprising a recording of theuser stating his or her name, for example “This is Bill Smith, I am . .. ,” to the beginning of the selected stored greeting and/or audio datacomprising a recording of the user providing further instructions to thecalling party, such as “Please leave a message and I will get back toyou as soon as possible,” to the end of the selected stored greeting142. Voicemail server 20 then transmits the stored greeting 142 and anyappropriate additional audio data to the relevant communication device60. In the illustrated embodiment, voicemail server 20 transmits theselected stored greeting 142 as data in a plurality of Voice overInternet Protocol (VoIP) packets 180.

FIG. 2B illustrates operation of the same embodiments of voicemailserver 20 and presence server 90 in an example in which voicemail server20 is not able to match the presence information 96 received frompresence server 90 to a stored greeting 142. As a result, voicemailserver 20 generates a greeting to play the calling party using TTSmodule 120. In the illustrated embodiments, voicemail server 20 andpresence server 90 include the same components as in FIG. 2A.

As described above with respect to FIG. 2A, voicemail server 20 receivescall signaling messages 112 when the incoming call is forwarded tovoicemail server 20. Voicemail server 20 matches all or a portion ofcall signaling message 112 to a device identifier 134 in user table 130.Voicemail server 20 then transmits a presence request 92 that includesthe user identifier 132 associated with the matched device identifier134.

Presence server 90 receives presence request 92 from voicemail server20. Presence server 90 matches the user identifier 132 contained in thereceived presence request 92 to a user identifier 132 in presencedatabase 150. Presence server 90 then generates a presence response 94that includes the presence information 96 associated with the matcheduser identifier 132. After generating presence response 94, presenceserver 90 transmits presence response 94 to voicemail server 20. Asnoted above, although FIG. 2B illustrates an embodiment of presenceserver 90 that retrieves presence information 96 from memory 24 b inresponse to receipt of a presence request 92, alternative embodiments ofpresence server 90 may dynamically create presence information 96 whenrequested by voicemail server 20.

Voicemail server 20 receives presence response 94 from presence server90 and attempts to match the presence information 96 contained inpresence response 94 to a particular instance of presence information 96in presence database 150. In the example illustrated in FIG. 2B,voicemail server 20 is unable to match the presence information 96 inpresence response 94 to an instance of presence information 96 ingreeting table 140.

As a result of the fact that voicemail server 20 is unable to match thereceived presence information 96 to any instance of presence information96 in presence table 150, voicemail server 20 generates a greeting usingTTS module 120. More specifically, voicemail server 20 inputs thepresence information 96 received from presence server 90 into TTS module120. TTS module 120 generates audio data representing synthesized speechsignals pronouncing the text included in the received presenceinformation 96. As described above with respect to FIG. 2A, voicemailserver 20 may append any additional audio information to the beginningor end of the generated audio data. Voicemail server 20 then transmitsthe generated audio data and any additional audio information to therelevant communication device 60. For example, in the illustratedembodiment, TTS module 120 generates the audio data as a plurality ofVoIP packets 180 that voicemail server 20 then transmits to the relevantcommunication device 60.

Although FIGS. 2A and 2B illustrate operation of voicemail server 20 andpresence server 90 in generating a greeting to be played to the callerof an incoming call that is forwarded to voicemail server 20, similarmatching techniques may be used to select a stored presence indicator172, or to generate audio data for a presence indicator, for usersretrieving voicemail message 26 from their account. In such embodiments,voicemail server 20 may utilize information stored in the header of therelevant voicemail message 26 in place of call signaling message 112.For example, voicemail server 20 may access a header of the relevantvoicemail message 26 to obtain an extension associated with the callerwho left the voicemail message 26 and then match that extension to adevice identifier 134 in user table 130 as discussed above. Operationmay then proceed as described in FIGS. 2A and 2B.

FIG. 3 is a flowchart describing example operation of a particularembodiment of voicemail server 20 when an incoming call from a sourcecommunication device 60 is forwarded to voicemail server 20. Thedescribed process begins at step 400 with voicemail server 20 receivingcall signaling message 112 that identifies a destination communicationdevice 60 for the incoming call. In particular embodiments, callsignaling message 112 represents a phone number or extension for thedestination communication device 60.

At step 410, voicemail server 20 identifies a user identifier 132associated with the destination communication device 60 specified bycall signaling message 112. The user identifier 132 may represent textcomprising the user's name, a numeric identifier associated with theuser, or any other appropriate form of identifier to identify therelevant user. Voicemail server 20 determines whether the calling partyis authorized to receive presence information 96 at step 420. If thecalling party is not authorized to receive presence information 96,voicemail server 20 transmits a default greeting to a sourcecommunication device 60 for the incoming call at step 430. Voicemailserver 20 then continues operation at step 500.

If the calling party is authorized to receive presence information 96,voicemail server 20 transmits a presence request 92 to presence server90 that includes the identified user identifier 132 at step 440. At step450, voicemail server 20 receives a presence response 94 from presenceserver 90. Presence response 94 includes presence information 96describing a presence status of the called party. Voicemail server 20determines whether the received presence information 96 matches anystored presence information 96 at step 460. If the received presenceinformation 96 is associated with a particular stored greeting 142,voicemail server 20 transmits a stored greeting 142 associated with thematched presence information 96 to the source communication device 60 atstep 470.

If presence information 96 does not match any stored presenceinformation 96, voicemail server 20 generates a greeting from presenceinformation 96 using TTS module 120 at step 480. Voicemail server 20then transmits the generated greeting to the source communication device60 at step 490. Voicemail server 20 may then receive audio data from thesource communication device 60 at step 500. Voicemail server 20 mayrecord a voicemail message 26 that includes the received audio data atstep 510.

FIG. 4 illustrates a flowchart describing example operation of aparticular embodiment of voicemail server 20 in providing a presenceindicator 172 to a voicemail recipient accessing a voicemail message 26from a sender. The described process begins at step 600 with voicemailserver 20 playing a recorded voicemail message 26 to the recipient.After playing the voicemail message 26, voicemail server 20 mayidentify, at step 610, a user identifier 132 associated with the senderof the voicemail message 26 based on the device identifier 134. Useridentifier 132 may represent text comprising the user's name, a numericidentifier associated with the user, or any other appropriate form ofidentifier to identify the relevant user. Voicemail server 20 thendetermines whether the recipient is authorized to receive presenceinformation 96 for the sender at step 620. If the recipient is notauthorized to receive presence information 96 for the sender, operationmay end at that point.

If the recipient is authorized to receive presence information 96,voicemail server 20 then prompts the recipient to indicate whether therecipient would like to receive presence information 96 for the senderat step 630. At step 640, voicemail server 20 determines whether therecipient has requested presence information 96 for the sender. If therecipient has not requested presence information, operation ends.

If the calling party has requested to receive presence information 96,voicemail server 20 identifies a device identifier 162 associated withthe recorded voicemail message 26 at step 650. In particularembodiments, device identifier 162 is stored in a header of the recordedvoicemail message 26. At step 660, voicemail server 20 transmits apresence request 92 to presence server 90 that includes the useridentifier 132 associated with the sender. At step 670, voicemail server20 receives a presence response 94 from presence server 90. Presenceresponse 94 includes presence information 96 describing a presencestatus of the sender. Voicemail server 20 determines whether presenceinformation 96 is associated with any of a plurality of stored presenceindicators 172 at step 680. If presence information 96 is associatedwith a particular stored presence indicator 172, voicemail server 20plays the associated stored presence indicator 172 to the communicationdevice 60 the recipient is using to contact voicemail server 20 at step690 and operation ends. If the received presence information 96 is notassociated with any stored presence information 96, voicemail server 20generates a presence indicator 172 from the received presenceinformation 96 using TTS module 120 at step 700. Voicemail server 20then plays the generated presence indicator 172 to the sourcecommunication device 60 at step 710 and operation ends.

Although the present invention has been described with severalembodiments, a myriad of changes, variations, alterations,transformations, and modifications may be suggested to one skilled inthe art, and it is intended that the present invention encompass suchchanges, variations, alterations, transformations, and modifications asfall within the scope of the appended claims.

1. A method of providing telecommunication service comprising: receivinga call for a called party from a calling party; determining a presencestatus of the called party; and communicating a greeting to the callingparty, wherein the greeting identifies the presence status of the calledparty.
 2. The method of claim 1, wherein communicating the greetingcomprises: selecting a greeting from a plurality of stored greetings,based on the presence status of the called party; and communicating theselected greeting to the calling party.
 3. The method of claim 1,wherein determining the presence status comprises receiving presenceinformation, the presence information comprising text and indicating thepresence status of the called party, and wherein communicating thegreeting comprises: generating audio data based on the text; andcommunicating the audio data to the calling party.
 4. The method ofclaim 1, wherein determining the presence status comprises receivingpresence information, the presence information comprising text andindicating the presence status of the called party; and whereincommunicating the greeting comprises: determining whether any of aplurality of stored greetings are associated with the presenceinformation; in response to determining that one of the stored greetingsis associated with the presence information, communicating theassociated stored greeting; and in response to determining that none ofthe stored greetings is associated with the presence information,generating audio data based on the text and communicating the audio datato the calling party.
 5. The method of claim 1, wherein communicatingthe greeting to the calling party comprises: generating a plurality ofdata packets, each data packet comprising at least a portion of thegreeting; and transmitting the data packets to a communication deviceassociated with the calling party.
 6. The method of claim 1, whereinreceiving the call comprises receiving a device identifier thatidentifies a communication device associated with the called party, andwherein determining a presence status of the called party comprises:determining a user associated with the communication device; anddetermining a presence status of the user.
 7. The method of claim 6,wherein determining a presence status of the user comprises:transmitting a presence request comprising a user identifier to apresence server, the user identifier identifying the user associatedwith the communication device; receiving a presence response from thepresence server, the presence response comprising presence informationthat indicates a presence status of the user associated with thecommunication device.
 8. A device for providing telecommunicationservice comprising: a memory operable to store processor instructions;and a processor operable to: receive a call for a called party from acalling party; determine a presence status of the called party; andcommunicate a greeting for the calling party, wherein the greetingidentifies the presence status of the called party.
 9. The device ofclaim 8, wherein the memory is further operable to store a plurality ofgreetings and wherein the processor is operable to communicate thegreeting by: selecting, based on the presence status of the calledparty, a greeting from the plurality of stored greetings; andcommunicating the selected greeting.
 10. The device of claim 8, wherein:the processor is operable to determine the presence status by receivingpresence information, wherein the presence information comprises textand indicates the presence status of the called party; the devicefurther comprises a text-to-speech (TTS) module operable to generateaudio data based on text in the presence information; and the processoris operable to communicating the greeting by communicating audio datagenerated by the TTS module to the calling party.
 11. The device ofclaim 8, further comprising a text-to-speech (TTS) module operable togenerate audio signals based on text received by the TTS module, andwherein the processor is operable to determine the presence status byreceiving presence information, wherein the presence informationincludes text indicating the presence status of the called party; andwherein the processor is operable to communicate the greeting by:determining whether any of a plurality of stored greetings areassociated with the presence information; in response to determiningthat one of the stored greetings is associated with the presenceinformation, communicating the associated stored greeting; and inresponse to determining that none of the stored greetings is associatedwith the presence information, communicating audio signals generated bythe TTS module to the calling party, the audio signals generated by theTTS module based on text included in the presence information.
 12. Thedevice of claim 8, wherein the processor is operable to communicate thegreeting to the calling party by: generating a plurality of datapackets, each data packet comprising at least a portion of the greeting;and transmitting the data packets to a communication device associatedwith the calling party.
 13. The device of claim 8, wherein the processoris operable to receive the call by receiving a device identifier thatidentifies a communication device associated with the called party, andwherein the processor is operable to determine a presence status of thecalled party by: determining a user associated with the communicationdevice; and determining a presence status of the user.
 14. The device ofclaim 13, wherein the processor is operable to determine the presencestatus of the user by: transmitting a presence request comprising a useridentifier to a presence server, the user identifier identifying theuser associated with the communication device; and receiving a presenceresponse from the presence server, the presence response comprisingpresence information that indicates a presence status of the userassociated with the communication device.
 15. A system for providingcommunication service comprising: a first communication device operableto initiate a call to a second communication device; the secondcommunication device; a call manager operable to forward the call to aserver if a called party associated with the second communication devicedoes not answer the call; a server operable to: receive the callforwarded by the call manager; determine a presence status of the calledparty; and communicate a greeting to a calling party associated with thefirst communication device, wherein the greeting identifies the presencestatus of the called party.
 16. The system of claim 15, wherein theserver is further operable to store a plurality of greetings and whereinthe server is operable to communicate the greeting by: selecting, basedon the presence status of the called party, a greeting from theplurality of stored greetings; and communicating the selected greeting.17. The system of claim 15, wherein: the server is operable to determinethe presence status by receiving presence information, wherein thepresence information comprises text and indicates the presence status ofthe called party; the server comprises a text-to-speech (TTS) moduleoperable to generate audio signals based on text in the presenceinformation; and the server is operable to communicating the greeting bycommunicating audio signals generated by the TTS module to the callingparty.
 18. The system of claim 15, wherein the server comprises atext-to-speech (TTS) module operable to generate audio signals based ontext received by the TTS module, and wherein the server is operable todetermine the presence status by receiving presence information, whereinthe presence information includes text indicating the presence status ofthe called party; and wherein the server is operable to communicate thegreeting by: determining whether any of a plurality of stored greetingsare associated with the presence information; in response to determiningthat one of the stored greetings is associated with the presenceinformation, communicating the associated stored greeting; and inresponse to determining that none of the stored greetings is associatedwith the presence information, communicating audio signals generated bythe TTS module to the calling party, the audio signals generated by theTTS module based on text included in the presence information.
 19. Thesystem of claim 15, wherein the server is operable to communicate thegreeting to the calling party by: generating a plurality of datapackets, each data packet comprising at least a portion of the greeting;and transmitting the data packets to the first communication device. 20.The system of claim 15, wherein the server is operable to receive thecall by receiving a device identifier that identifies the secondcommunication device, and wherein the processor is operable to determinea presence status of the called party by: determining the called partyassociated with the second communication device; and determining apresence status of the called party.
 21. The system of claim 20, furthercomprising a presence server operable to: determine a presence statusfor each of a plurality of users; store presence information associatedwith each of the plurality of users, the presence information indicatingthe presence status of that user; receive a presence request from aremote element, the presence request identifying one of the users, andin response to receiving the presence request, transmit a presenceresponse to the remote element, the presence response including presenceinformation associated with the identified user; and wherein the serveris operable to determine the presence status of the called party by:transmitting a presence request comprising a user identifier to thepresence server, the user identifier identifying the called party; andreceiving a presence response from the presence server, the presenceresponse comprising presence information that indicates a presencestatus of the user associated with the communication device.
 22. Asystem for providing communication service comprising: means forreceiving a call for a called party from a calling party; means fordetermining a presence status of the called party; and means forcommunicating a greeting for the calling party, wherein the greetingidentifies the presence status of the called party.